<?php

namespace app\common\lib;

class Str
{
    /**
     * 生成登录所需的token
     * @param $string
     * @return string
     */
    public static function getLoginToken($string)
    {
        $str = md5(uniqid(md5(microtime(true)), true)); // 生成一个不会重复的值
        $token = sha1($str . $string); // 加密
        return $token;
    }

    /**
     * 双层md5加密
     * @param $val
     * @return string
     */
    public static function imd5($val)
    {
        return md5(substr(md5($val), 4, 10) . substr(md5($val), 20, 10));
    }

    /**
     * 生成推荐码
     * @param int $len
     * @return string
     */
    public static function getSpread($len = 10)
    {
        $info = "";
        $pattern = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        for($i = 0; $i < $len; $i++) {
            $info .= $pattern[mt_rand(0, strlen($pattern)-1)];    // 生成php随机数
        }
        return $info;
    }

    /**
     * 密码加密
     * @param $password
     * @return false|string|null
     */
    public static function pwdHash($password = '')
    {
        if (empty($password)) return '';
        $salf = 'reward_1314';
        $password .= $salf;
        return password_hash($password, PASSWORD_DEFAULT);
    }

    /**
     * 校验密码
     * @param $loginPassword   // 登录提交的密码
     * @param $password        // 原密码
     * @return bool
     */
    public static function pwdVerify($loginPassword, $password)
    {
        $salf = 'reward_1314';
        $loginPassword .= $salf;
        return password_verify($loginPassword, $password);
    }

    /**
     * 生成唯一订单id
     * @param bool $type
     * @return int|string
     * @throws \think\Exception
     */
    public static function getOrderId($type = true)
    {
        $workId = rand(1, 1023);
        $orderId = Snowflake::getInstance()->setWorkId($workId)->nextId();
        if ($type) {
            return $orderId . date('YmdHis');
        }
        return $orderId;
    }
}